﻿# ============================================================================
# NFTest 可执行文件配置
# ============================================================================
# NFTest 是框架的测试程序，用于测试各种共享内存数据结构
# ============================================================================

CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
PROJECT(NFTest)

# 收集源文件
AUX_SOURCE_DIRECTORY(. SRC)

# 创建可执行文件
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC})

# ============================================================================
# 链接配置
# ============================================================================
# 根据构建类型配置链接库
# ============================================================================

if (CMAKE_BUILD_TYPE STREQUAL "Release")
	# 使用公共核心库列表（定义在 cmake/Dependencies.cmake）
	set(PROJECT_LIBS ${NFSHM_CORE_LIBS})

	# 定义系统库和第三方库（不需要建立依赖关系）
	# 使用公共系统库列表（定义在 cmake/Dependencies.cmake）
	# NFTest 需要额外的测试库和工具库
	set(SYSTEM_LIBS
			${NFSHM_SYSTEM_LIBS}
	)

	if(UNIX)
		# 直接链接所有库（使用目标名时，CMake 会自动建立依赖关系）
		TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBS} ${SYSTEM_LIBS})
	else(WIN32)
		# 直接链接所有库（使用目标名时，CMake 会自动建立依赖关系）
		TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBS} ${SYSTEM_LIBS})
	endif()
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
	# 使用公共核心库列表（定义在 cmake/Dependencies.cmake）
	set(PROJECT_LIBS ${NFSHM_CORE_LIBS})

	# 定义系统库和第三方库（不需要建立依赖关系）
	# 使用公共系统库列表（定义在 cmake/Dependencies.cmake）
	# NFTest 需要额外的测试库
	set(SYSTEM_LIBS
			${NFSHM_SYSTEM_LIBS}
	)

	if(UNIX)
		# 直接链接所有库（使用目标名时，CMake 会自动建立依赖关系）
		TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBS} ${SYSTEM_LIBS})
	else(WIN32)
		# 直接链接所有库（使用目标名时，CMake 会自动建立依赖关系）
		TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBS} ${SYSTEM_LIBS})
	endif()
endif()

# ============================================================================
# Install 配置
# ============================================================================
# 安装可执行文件到对应的构建类型目录
# ============================================================================
if (CMAKE_BUILD_TYPE STREQUAL "Release")
    install(TARGETS ${PROJECT_NAME}
            RUNTIME DESTINATION "Bin/Release")
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
    install(TARGETS ${PROJECT_NAME}
            RUNTIME DESTINATION "Bin/Debug")
endif()
